package com.sihan.framework.etm.service.business;

import java.util.List;

import com.framework.model.ApiResult;
import com.framework.model.PageResult;
import com.framework.mybatis.service.BaseService;
import com.sihan.framework.etm.dto.CommonQueryDTO;
import com.sihan.framework.etm.dto.business.ToolBorrowReturnRecordDTO;
import com.sihan.framework.etm.dto.business.ToolInWarehouseMasterDTO;
import com.sihan.framework.etm.dto.business.ToolPurchaseDTO;
import com.sihan.framework.etm.dto.business.ToolPurchaseDetailDTO;
import com.sihan.framework.etm.entity.business.PurchasePlanMaster;
import com.sihan.framework.etm.vo.CommonQueryResultVO;
import com.sihan.framework.etm.vo.OrgVO;
import com.sihan.framework.etm.vo.business.PurchasePlanDetailVO;
import com.sihan.framework.etm.vo.business.PurchasePlanMasterVO;
import com.sihan.framework.etm.vo.business.ToolInWarehouseDetailVO;
import com.sihan.framework.etm.vo.business.ToolInWarehouseStandingBookVO;

public interface ToolPurchaseService extends BaseService<PurchasePlanMaster, String>{

	/**
	 * 
	 * @description  分页查询采购计划
	 * @param dto
	 * @return
	 * @auther 韩兵
	 * @Date 2020年7月10日
	 * @return PageResult<PurchasePlanMasterVO>
	 */
	PageResult<PurchasePlanMasterVO> selectPage(ToolPurchaseDTO dto);
	
	/**
	 * 
	 * @description 计划提交
	 * @param id
	 * @auther 韩兵
	 * @Date 2020年7月11日
	 * @return void
	 */
	void submitPlan(String id);
	
	/**
	 * 
	 * @description 入库
	 * @param id
	 * @param warehouseTime
	 * @auther 韩兵
	 * @Date 2020年7月11日
	 * @return void
	 */
	void purchaseInWarehouse(String id,String warehouseTime);
	
	/**
	 * 
	 * @description  计划明细
	 * @param planId
	 * @return
	 * @auther 韩兵
	 * @Date 2020年7月11日
	 * @return List<PurchasePlanDetailVO>
	 */
	List<PurchasePlanDetailVO> listPlanDetailByPlanId(ToolPurchaseDTO dto);
	
	/**
	 * 
	 * @description 新增编辑采购计划明细
	 * @param dto
	 * @auther 韩兵
	 * @Date 2020年7月11日
	 * @return void
	 */
	void saveOrUpdatePlanDetail(ToolPurchaseDetailDTO dto);
	
	/**
	 * 
	 * @description  新增采购计划
	 * @param name
	 * @param type
	 * @return
	 * @auther 韩兵
	 * @Date 2020年7月11日
	 * @return PurchasePlanMasterVO
	 */
	PurchasePlanMasterVO addPurchasePlan(String name, Integer type);
	
	/**
	 * 
	 * @description 工器具归属
	 * @return
	 * @auther 韩兵
	 * @Date 2020年7月11日
	 * @return CommonQueryResultVO
	 */
	OrgVO toolBelongToOrg();
	
	/**
	 * 
	 * @description 增量入库主表
	 * @param dto
	 * @auther 韩兵
	 * @Date 2020年7月11日
	 * @return void
	 */
	void inWarehouseMaster(ToolInWarehouseMasterDTO dto);
	
	/**
	 * 
	 * @description  扫描结果
	 * @return
	 * @auther 韩兵
	 * @Date 2020年7月11日
	 * @return ToolInWarehouseDetailVO
	 */
	ToolInWarehouseDetailVO toolScanResult();
	
	/**
	 * 
	 * @description  打印工器具编号
	 * @param code
	 * @auther 韩兵
	 * @Date 2020年7月11日
	 * @return void
	 */
	void printToolCode(String code);
	
	/**
	 * 
	 * @description  提交增量入库
	 * @param id
	 * @auther 韩兵
	 * @Date 2020年7月11日
	 * @return void
	 */
	@SuppressWarnings("rawtypes")
	ApiResult submitInWarehouse();
	
	/**
	 * 
	 * @description 新增入库台账
	 * @param dto
	 * @return
	 * @auther 韩兵
	 * @Date 2020年7月13日
	 * @return PageResult<ToolInWarehouseStandingBookVO>
	 */
	PageResult<ToolInWarehouseStandingBookVO> warehouseStandingBook(ToolBorrowReturnRecordDTO dto);
	
	/**
	 * 
	 * @description 检查工器具名称是否重复
	 * @param typeId
	 * @param toolName
	 * @return
	 * @auther 韩兵
	 * @Date 2020年11月4日
	 * @return int
	 */
	int checkToolHasDuplicate(String typeId, String toolName);
	
	/**
	 * 
	 * @description  查询需要增量入库的工器具名称
	 * @param dto
	 * @return
	 * @auther 韩兵
	 * @Date 2020年12月15日
	 * @return List<CommonQueryResultVO>
	 */
	List<CommonQueryResultVO> needAddToolList(CommonQueryDTO dto);
	
	/**
	 * 
	 * @description  名称查询编号
	 * @param dto
	 * @return
	 * @auther 韩兵
	 * @Date 2021年1月4日
	 * @return List<CommonQueryResultVO>
	 */
	List<CommonQueryResultVO> needAddToolCode(CommonQueryDTO dto);
}
